package com.shop.controller;

import com.shop.pojo.pms.Pms_Attr_Attrgroup_Relation;
import com.shop.pojo.pms.Pms_Attr_Group;
import com.shop.pojo.pms.Pms_Category;
import com.shop.pojo.pms.Pms_Category_Attr;
import com.shop.service.*;
import com.shop.utils.LayuiUtils;
import com.shop.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

//属性和分组的控制层
@RestController
@RequestMapping("/attrGroup")
public class Pms_Attr_Group_Controller {

    @Autowired
    private Pms_Attr_Group_Service pms_attr_group_service;
    @Autowired
    private Pms_AttrOrAttrGroup_Service pms_attrOrAttrGroup_service;
    @Autowired
    private Pms_Attr_Service pms_attr_service;
    @Autowired
    private Pms_Category_Attr_Service pms_category_attr_service;
    /*
     * @Description 查找全部的分组，带有分页
     * @param
     * @return  com.shop.utils.LayuiUtils<com.shop.pojo.pms.Pms_Attr_Group>
     * @author liusupeng
     * @date 2020/10/27 17:36
     */
    @GetMapping("/findGroup")
public LayuiUtils<Pms_Attr_Group> findAllGroup(Integer page){

        return pms_attr_group_service.PMS_ATTR_GROUP_LIST(page);
}
    /*
     * @Description  根据商品分类id和分页的页码来查询当前商品分类下的全部分组信息
     * @param page
     * @param catelogId
     * @return com.shop.utils.LayuiUtils<com.shop.pojo.pms.Pms_Attr_Group>
     * @author liusupeng
     * @date 2020/10/27 22:32
     */
    @GetMapping("/findGroupByCatelogId")
    public LayuiUtils<Pms_Attr_Group> findAllGroupByCatelogId(Integer page,Integer catelogId){


        return pms_attr_group_service.selectByCataId(page,catelogId);
    }
    /*
     * @Description  分页查询当前没有分配分类的全部分组信息
     * @param page
     * @return com.shop.utils.LayuiUtils<com.shop.pojo.pms.Pms_Attr_Group>
     * @author liusupeng
     * @date 2020/10/27 23:17
     */
    @GetMapping("/findNotGroupByCatelogId")
    public LayuiUtils<Pms_Attr_Group> findAllGroupNot(Integer page){



        return pms_attr_group_service.selectNotPageGroup(page);
    }
    /*
     * @Description 查找全部分组信息
     * @param
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 19:44
     */
    @GetMapping("/findAllGroup")
    public R findAllGroup(){
        return pms_attr_group_service.PMS_ATTR_GROUP_LIST();
    }
    /*
     * @Description     根据分类ID来查询当前分类下的分组的全部属性
     * @param catelogId
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 19:55
     */
    @GetMapping("/findAllGroupByCatelogIdandGroupId")
    public R findAllGroupByCatelogIdandGroupId(Long catelogId,Long attr_group_Id){

        return pms_attrOrAttrGroup_service.findAllAttrGroupByCatalogId(catelogId,attr_group_Id);
    }
    /*
     * @Description 查找全部属性
     * @param
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 21:07
     */
    @GetMapping("/findAllAttr")
    public R findAllAttr(Pms_Category_Attr pms_category){


        return pms_category_attr_service.findAllPms_Category_Attr(pms_category);
    }
    /*
     * @Description  查询当前分类下的全部分组，然后再通过分组来查询当前分组下的全部属性，最终封装成对象
     * @param catelogId
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/11/1 14:55
     */
    @GetMapping("/findAllAttrOrGroupByGroupIdAndCatelogId")
    public R findAllAttrOrGroupByGroupIdAndCatelogId(Long catelogId){

        return pms_attrOrAttrGroup_service.findAllAttrByAttr_Group(catelogId);
    }
    /*
     * @Description 添加属性分组中间表、跟属性ID和分组ID和分类ID
     * 1、首先根据前台传来的一个属性ID的数组来通过split进行解析
     * 2、然后拿到这个数组里的id然后配合我们的分组id和分类id然后传入到我们的属性分组中间表实体类里面
     * 3、如果在插入的时候出现了异常的话直接return一个500
     * 4、正常执行下去的话就是执行return一个code为200的
     * @param pms_attr_attrgroup_relation
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 22:06
     */
@PostMapping("/addGroupByCatalogIdandAttr")
    public R addGroupByCatalogIdandAttr(String AttrIdStr,Long catelogId,Long attr_group_id){


        return pms_attrOrAttrGroup_service.addAttrGroupRelation(AttrIdStr,catelogId,attr_group_id);
    }
    /*
     * @Description 删除属性分组中间表里的数据
     * 1、首先根据前台传来的一个属性ID的数组来通过split进行解析
     * 2、然后拿到这个数组里的attrid然后配合我们的分组id和分类id来进行查询当前属性分组表里的数据取到主键ID
     * 3、根据ID来进行删除
     * 4、正常执行下去的话就是执行return一个code为200的
     * 5、异常情况直接return一个code为500的异常信息
     * @param pms_attr_attrgroup_relation
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 22:06
     */
    @DeleteMapping("/delGroupByCatalogIdandAttr")
    public R delGroupByCatalogId(String AttrIdStr,Long catelogId,Long attr_group_id){

        return pms_attrOrAttrGroup_service.delAttrGroupRelation(AttrIdStr, catelogId, attr_group_id);
    }

    /*
     * @Description  根据分组id来进行删除分组
     * @param groupId
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/27 23:19
     */
    @DeleteMapping("/delGroupById/{groupId}")
    public R deleteGroupById(@PathVariable("groupId") Integer groupId){



        return pms_attr_group_service.deleteGroupById(groupId);
    }

    /*
     * @Description 根据分组ID来对分组名称进行修改
     * @param pms_attr_group
     * @return com.shop.utils.R
     * @author liusupeng
     * @date 2020/10/28 18:50
     */
    @PutMapping("/updateGroupById")
    public R updateGroupNameById(Pms_Attr_Group pms_attr_group){

        return pms_attr_group_service.updateGroupNameById(pms_attr_group);
    }

    /**
     * 添加分组信息
     * @param pms_attr_group
     * @return
     */
    @PostMapping("/insertGroupBy")
    public R insertGroupBy(Pms_Attr_Group pms_attr_group){

        return pms_attr_group_service.insertGroupBy(pms_attr_group);
    }


}
